package view.instructor;

import java.awt.EventQueue;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

import model.Cursada;
import model.Horario;
import model.IRCursadaInstructor;
import model.IRHorarioInstructor;
import model.Persona;
import model.comunication.ICursada;
import model.comunication.IHorario;
import model.dba.IRCursadaInstructorDAO;
import model.dba.IRHorarioInstructorDAO;

public class VerInstructor extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField campoNombre;
	private JTable tableCursos;
	private JTable tableHorarios;
	private Persona instructor;

	private List<IRHorarioInstructor> horariosInstructor;
	private IRHorarioInstructorDAO cmmHorarioInstructor;
	private IHorario cmmHorario;

	private DefaultTableModel modeloHorarios;
	private DefaultTableModel modeloCursos;

	private IRCursadaInstructorDAO cmmCursadaInstructor;
	private List<IRCursadaInstructor> cursadaInstructor;
	private ICursada cmmCursada;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					VerInstructor frame = new VerInstructor(null);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public VerInstructor(Persona instructor) {
		horariosInstructor = new ArrayList<IRHorarioInstructor>();
		cmmHorarioInstructor = IRHorarioInstructorDAO.getInstance();
		cmmHorario = IHorario.getInstance();

		modeloHorarios = new DefaultTableModel(new Object[][] {}, new String[] { "Dia", "Horario" });
		modeloCursos = new DefaultTableModel(new Object[][] {}, new String[] { "Curso", "Dia", "Horario" });

		cmmCursadaInstructor = IRCursadaInstructorDAO.getInstance();
		cursadaInstructor = new ArrayList<IRCursadaInstructor>();
		cmmCursada = ICursada.getInstance();

		this.instructor = instructor;
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 458, 480);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel Nombre = new JLabel("Nombre:");
		Nombre.setBounds(10, 11, 66, 14);
		contentPane.add(Nombre);

		campoNombre = new JTextField();
		campoNombre.setEditable(false);
		campoNombre.setBounds(75, 8, 357, 20);
		contentPane.add(campoNombre);
		campoNombre.setColumns(10);
		campoNombre.setText(instructor.getNombre() + " " + instructor.getApellido());

		JScrollPane scrollPaneCursos = new JScrollPane();
		scrollPaneCursos.setBounds(10, 59, 422, 158);
		contentPane.add(scrollPaneCursos);

		tableCursos = new JTable();
		tableCursos.setModel(modeloCursos);
		scrollPaneCursos.setViewportView(tableCursos);

		JScrollPane scrollPaneHorarios = new JScrollPane();
		scrollPaneHorarios.setBounds(10, 228, 422, 158);
		contentPane.add(scrollPaneHorarios);

		tableHorarios = new JTable();
		tableHorarios.setModel(modeloHorarios);
		scrollPaneHorarios.setViewportView(tableHorarios);

		JButton btnAgregarHorario = new JButton("Agregar Horario");
		btnAgregarHorario.setBounds(10, 412, 139, 23);
		contentPane.add(btnAgregarHorario);

		JButton btnCerrar = new JButton("Cerrar");
		btnCerrar.setBounds(159, 412, 89, 23);
		contentPane.add(btnCerrar);

		loadTableHorarios();
		loadTableCursos();
	}

	private void loadTableCursos() {
		cursadaInstructor = cmmCursadaInstructor.findAll(instructor.getDNI());
		for (int i = 0; i < cursadaInstructor.size(); i++) {
			Cursada cursada = cmmCursada.getCursada(cursadaInstructor.get(i).getidCursada());
			modeloCursos.addRow(new Object[] { cursada.getCurso().getNombre() });
		}
	}

	private void loadTableHorarios() {
		horariosInstructor = cmmHorarioInstructor.findAll(instructor.getDNI());
		for (int i = 0; i < horariosInstructor.size(); i++) {
			Horario horario = cmmHorario.getHorario(horariosInstructor.get(i).getIdHorario());
			SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm");
			String fechaDesde = format.format(horario.getDesde().getTime()).substring(11);
			String fechaHasta = format.format(horario.getHasta().getTime()).substring(11);
			modeloHorarios.addRow(new Object[] { horario.getDia(), fechaDesde + " - " + fechaHasta });
		}
	}
}
